package com.aha.dataanalyzeandview.config;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.util.unit.DataSize;
import org.springframework.web.client.RestTemplate;

import javax.servlet.MultipartConfigElement;
import java.time.Duration;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;


@Configuration
public class BeanConf {
    @Autowired
    private GsonBuilder gsonBuilder;

    @Bean
    public Gson gson() {
        return gsonBuilder.create();
    }

    @Autowired
    private RestTemplateBuilder builder;

    @Bean
    public RestTemplate restTemplate() {
        Duration timeout = Duration.ofSeconds(3);
        return builder.setConnectTimeout(timeout)
                .setReadTimeout(timeout)
                .build();
    }

//    @Bean
//    public Executor taskPool() {
//        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//        //核心线程数
//        executor.setCorePoolSize(4);
//        //最大线程数
//        executor.setMaxPoolSize(16);
//        //缓冲队列
//        executor.setQueueCapacity(10000);
//        //允许线程的空闲时间
//        executor.setKeepAliveSeconds(600);
//        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//        return executor;
//    }




//    /**
//     * 配置上传文件大小的配置 (再配置文件中配置过了，就不需要写这个了)
//     *
//     * #配置文件传输
//     * spring.servlet.multipart.enabled =true
//     * spring.servlet.multipart.file-size-threshold =0
//     * #单个数据的大小
//     * spring.servlet.multipart.max-file-size = 100Mb
//     * #总数据的大小
//     * spring.servlet.multipart.max-request-size=100Mb
//     *
//     * @return
//     */
//    @Bean
//    public MultipartConfigElement multipartConfigElement() {
//        MultipartConfigFactory factory = new MultipartConfigFactory();
//        //  单个数据大小
//        factory.setMaxFileSize(DataSize.parse("10GB"));
//        /// 总上传数据大小
//        factory.setMaxRequestSize(DataSize.parse("10GB"));
//        return factory.createMultipartConfig();
//    }


}
